home *** CD-ROM | disk | FTP | other *** search
/ Macwelt 4 / Macwelt DVD 4.cdr / Entwickler / Mac-OS / oxygen / oxygen.app / Contents / Resources / Java / jh.jar / javax / help / HelpUtilities.class (.txt) < prev    next >
Encoding:
Java Class File  |  2002-06-24  |  8.8 KB  |  474 lines

  1. package javax.help;
  2.  
  3. import java.awt.Component;
  4. import java.awt.IllegalComponentStateException;
  5. import java.beans.BeanInfo;
  6. import java.beans.Introspector;
  7. import java.io.InputStream;
  8. import java.net.URL;
  9. import java.text.CollationElementIterator;
  10. import java.text.MessageFormat;
  11. import java.text.RuleBasedCollator;
  12. import java.util.Enumeration;
  13. import java.util.Hashtable;
  14. import java.util.Locale;
  15. import java.util.MissingResourceException;
  16. import java.util.ResourceBundle;
  17. import java.util.Vector;
  18.  
  19. public class HelpUtilities {
  20.    private static Hashtable tailsPerLocales = new Hashtable();
  21.    private static Hashtable bundles;
  22.    private static ResourceBundle lastBundle = null;
  23.    private static Locale lastLocale = null;
  24.    private static final boolean debug = false;
  25.  
  26.    public static String getHelpSetNameFromBean(Class var0) {
  27.       String var1;
  28.       try {
  29.          BeanInfo var2 = Introspector.getBeanInfo(var0);
  30.          var1 = (String)var2.getBeanDescriptor().getValue("helpSetName");
  31.       } catch (Exception var5) {
  32.          var1 = null;
  33.       }
  34.  
  35.       if (var1 == null) {
  36.          String var6 = var0.getName();
  37.          int var3 = var6.lastIndexOf(".");
  38.          if (var3 == -1) {
  39.             var1 = var6 + "Help.hs";
  40.          } else {
  41.             String var4 = var6.substring(0, var3);
  42.             var1 = var4.replace('.', '/') + "/Help.hs";
  43.          }
  44.       }
  45.  
  46.       return var1;
  47.    }
  48.  
  49.    public static String getIDStringFromBean(Class var0) {
  50.       String var1;
  51.       try {
  52.          BeanInfo var2 = Introspector.getBeanInfo(var0);
  53.          var1 = (String)var2.getBeanDescriptor().getValue("helpID");
  54.       } catch (Exception var3) {
  55.          var1 = null;
  56.       }
  57.  
  58.       if (var1 == null) {
  59.          String var4 = var0.getName();
  60.          var1 = var4 + ".topID";
  61.       }
  62.  
  63.       return var1;
  64.    }
  65.  
  66.    public static String getDefaultQueryEngine() {
  67.       return "com.sun.java.help.search.DefaultSearchEngine";
  68.    }
  69.  
  70.    public static URL getLocalizedResource(ClassLoader var0, String var1, String var2, Locale var3) {
  71.       return getLocalizedResource(var0, var1, var2, var3, false);
  72.    }
  73.  
  74.    public static URL getLocalizedResource(ClassLoader var0, String var1, String var2, Locale var3, boolean var4) {
  75.       Enumeration var6 = getCandidates(var3);
  76.  
  77.       while(var6.hasMoreElements()) {
  78.          String var7 = (String)var6.nextElement();
  79.          String var8 = var1 + var7 + var2;
  80.          URL var5;
  81.          if (var0 == null) {
  82.             var5 = ClassLoader.getSystemResource(var8);
  83.          } else {
  84.             var5 = var0.getResource(var8);
  85.          }
  86.  
  87.          if (var5 != null) {
  88.             if (!var4) {
  89.                return var5;
  90.             }
  91.  
  92.             try {
  93.                InputStream var9 = var5.openConnection().getInputStream();
  94.                if (var9 != null) {
  95.                   int var10 = var9.read();
  96.                   var9.close();
  97.                   if (var10 != -1) {
  98.                      return var5;
  99.                   }
  100.                }
  101.             } catch (Throwable var11) {
  102.             }
  103.          }
  104.       }
  105.  
  106.       return null;
  107.    }
  108.  
  109.    public static synchronized Enumeration getCandidates(Locale var0) {
  110.       LocalePair var2 = new LocalePair(var0, Locale.getDefault());
  111.       Vector var1 = (Vector)tailsPerLocales.get(var2);
  112.       if (var1 != null) {
  113.          debug("getCandidates - cached copy");
  114.          return var1.elements();
  115.       } else {
  116.          String var3 = var0.toString();
  117.          StringBuffer var4 = (new StringBuffer("_")).append(var3);
  118.          if (var3 == null) {
  119.             var4.setLength(0);
  120.          }
  121.  
  122.          var1 = new Vector();
  123.  
  124.          while(var4.length() != 0) {
  125.             debug("  adding ", var4);
  126.             String var5 = var4.toString();
  127.             var1.addElement(var5);
  128.             int var6 = var5.lastIndexOf(95);
  129.             if (var6 != -1) {
  130.                var4.setLength(var6);
  131.             }
  132.          }
  133.  
  134.          debug("  addign -- null -- ");
  135.          var1.addElement("");
  136.          if (var0 != Locale.getDefault()) {
  137.             String var10 = Locale.getDefault().toString();
  138.             StringBuffer var11 = (new StringBuffer("_")).append(var10);
  139.             if (var10 == null) {
  140.                var11.setLength(0);
  141.             }
  142.  
  143.             while(var11.length() != 0) {
  144.                debug("  adding ", var11);
  145.                String var7 = var11.toString();
  146.                var1.addElement(var7);
  147.                int var8 = var7.lastIndexOf(95);
  148.                if (var8 != -1) {
  149.                   var11.setLength(var8);
  150.                }
  151.             }
  152.          }
  153.  
  154.          tailsPerLocales.put(var2, var1);
  155.          debug("tails is == ", var1);
  156.          return var1.elements();
  157.       }
  158.    }
  159.  
  160.    public static Locale getLocale(Component var0) {
  161.       if (var0 == null) {
  162.          return Locale.getDefault();
  163.       } else {
  164.          try {
  165.             return var0.getLocale();
  166.          } catch (IllegalComponentStateException var2) {
  167.             return Locale.getDefault();
  168.          }
  169.       }
  170.    }
  171.  
  172.    private static synchronized ResourceBundle getBundle(Locale var0) {
  173.       if (lastLocale == var0) {
  174.          return lastBundle;
  175.       } else {
  176.          if (bundles == null) {
  177.             bundles = new Hashtable();
  178.          }
  179.  
  180.          ResourceBundle var1 = (ResourceBundle)bundles.get(var0);
  181.          if (var1 == null) {
  182.             try {
  183.                var1 = ResourceBundle.getBundle("javax.help.resources.Constants", var0);
  184.             } catch (MissingResourceException var3) {
  185.                throw new Error("Fatal: Resource for javahelp is missing");
  186.             }
  187.  
  188.             bundles.put(var0, var1);
  189.          }
  190.  
  191.          lastBundle = var1;
  192.          lastLocale = var0;
  193.          return var1;
  194.       }
  195.    }
  196.  
  197.    public static String getString(String var0) {
  198.       return getString(Locale.getDefault(), var0);
  199.    }
  200.  
  201.    public static String getText(String var0) {
  202.       return getText((Locale)Locale.getDefault(), var0, (String)null, (String)null);
  203.    }
  204.  
  205.    public static String getText(String var0, String var1) {
  206.       return getText((Locale)Locale.getDefault(), var0, var1, (String)null);
  207.    }
  208.  
  209.    public static String getText(String var0, String var1, String var2) {
  210.       return getText(Locale.getDefault(), var0, var1, var2);
  211.    }
  212.  
  213.    public static String getText(String var0, String var1, String var2, String var3) {
  214.       return getText(Locale.getDefault(), var0, var1, var2, var3);
  215.    }
  216.  
  217.    public static String getString(Locale var0, String var1) {
  218.       ResourceBundle var2 = getBundle(var0);
  219.  
  220.       try {
  221.          return var2.getString(var1);
  222.       } catch (MissingResourceException var4) {
  223.          throw new Error("Fatal: Localization data for JavaHelp is broken.  Missing " + var1 + " key.");
  224.       }
  225.    }
  226.  
  227.    public static String[] getStringArray(Locale var0, String var1) {
  228.       ResourceBundle var2 = getBundle(var0);
  229.  
  230.       try {
  231.          return var2.getStringArray(var1);
  232.       } catch (MissingResourceException var4) {
  233.          throw new Error("Fatal: Localization data for JavaHelp is broken.  Missing " + var1 + " key.");
  234.       }
  235.    }
  236.  
  237.    public static String getText(Locale var0, String var1) {
  238.       return getText(var0, var1, (String)null, (String)null, (String)null);
  239.    }
  240.  
  241.    public static String getText(Locale var0, String var1, String var2) {
  242.       return getText(var0, var1, var2, (String)null, (String)null);
  243.    }
  244.  
  245.    public static String getText(Locale var0, String var1, String var2, String var3) {
  246.       return getText(var0, var1, var2, var3, (String)null);
  247.    }
  248.  
  249.    public static String getText(Locale var0, String var1, String var2, String var3, String var4) {
  250.       ResourceBundle var5 = getBundle(var0);
  251.       if (var2 == null) {
  252.          var2 = "null";
  253.       }
  254.  
  255.       if (var3 == null) {
  256.          var3 = "null";
  257.       }
  258.  
  259.       if (var4 == null) {
  260.          var4 = "null";
  261.       }
  262.  
  263.       try {
  264.          String var6 = var5.getString(var1);
  265.          String[] var7 = new String[]{var2, var3, var4};
  266.          MessageFormat var8 = new MessageFormat(var6);
  267.  
  268.          try {
  269.             var8.setLocale(var0);
  270.          } catch (NullPointerException var10) {
  271.          }
  272.  
  273.          return var8.format(var7);
  274.       } catch (MissingResourceException var11) {
  275.          throw new Error("Fatal: Localization data for JavaHelp is broken.  Missing " + var1 + " key.");
  276.       }
  277.    }
  278.  
  279.    public static Locale localeFromLang(String var0) {
  280.       Object var3 = null;
  281.       Locale var4 = null;
  282.       if (var0 == null) {
  283.          return var4;
  284.       } else {
  285.          int var5 = var0.indexOf("_");
  286.          int var6 = var0.indexOf("-");
  287.          if (var5 == -1 && var6 == -1) {
  288.             String var10 = "";
  289.             var4 = new Locale(var0, var10);
  290.          } else {
  291.             if (var5 == -1 && var6 != -1) {
  292.                var5 = var6;
  293.             }
  294.  
  295.             String var1 = var0.substring(0, var5);
  296.             int var7 = var0.indexOf("_", var5 + 1);
  297.             int var8 = var0.indexOf("-", var5 + 1);
  298.             if (var7 == -1 && var8 == -1) {
  299.                String var9 = var0.substring(var5 + 1);
  300.                var4 = new Locale(var1, var9);
  301.             } else {
  302.                if (var7 == -1 && var8 != -1) {
  303.                   var7 = var8;
  304.                }
  305.  
  306.                String var2 = var0.substring(var5 + 1, var7);
  307.                String var11 = var0.substring(var7 + 1);
  308.                var4 = new Locale(var1, var2, var11);
  309.             }
  310.          }
  311.  
  312.          return var4;
  313.       }
  314.    }
  315.  
  316.    public static boolean isStringInString(RuleBasedCollator var0, String var1, String var2) {
  317.       if (var1 != null && var2 != null) {
  318.          if (var1.length() == 0 && var2.length() == 0) {
  319.             return true;
  320.          } else {
  321.             boolean var3 = true;
  322.             boolean var6 = false;
  323.             var0.setDecomposition(2);
  324.             String var7 = var0.getRules();
  325.             if (var7.startsWith("@")) {
  326.                var6 = true;
  327.             }
  328.  
  329.             CollationElementIterator var4 = var0.getCollationElementIterator(var1);
  330.             CollationElementIterator var5 = var0.getCollationElementIterator(var2);
  331.             int var8 = 0;
  332.             int var9 = 0;
  333.             boolean var16 = true;
  334.             boolean var17 = true;
  335.             int var18 = 0;
  336.  
  337.             while(true) {
  338.                try {
  339.                   var4.setOffset(0);
  340.                } catch (NoSuchMethodError var28) {
  341.                }
  342.  
  343.                var8 = var4.next();
  344.  
  345.                try {
  346.                   var5.setOffset(var18);
  347.                } catch (NoSuchMethodError var26) {
  348.                } catch (Exception var27) {
  349.                   return false;
  350.                }
  351.  
  352.                var9 = var5.next();
  353.                if (var9 == -1) {
  354.                   return false;
  355.                }
  356.  
  357.                while(var9 != -1) {
  358.                   if (var8 == var9) {
  359.                      try {
  360.                         var18 = var5.getOffset();
  361.                      } catch (NoSuchMethodError var25) {
  362.                      }
  363.                      break;
  364.                   }
  365.  
  366.                   int var10 = CollationElementIterator.primaryOrder(var8);
  367.                   int var11 = CollationElementIterator.primaryOrder(var9);
  368.                   if (var10 == var11) {
  369.                      try {
  370.                         var18 = var5.getOffset();
  371.                      } catch (NoSuchMethodError var24) {
  372.                      }
  373.                      break;
  374.                   }
  375.  
  376.                   var9 = var5.next();
  377.                }
  378.  
  379.                if (var9 == -1) {
  380.                   return false;
  381.                }
  382.  
  383.                var16 = false;
  384.                var17 = false;
  385.                boolean var19 = var0.getStrength() >= 1;
  386.                boolean var20 = var19;
  387.                boolean var21 = var0.getStrength() >= 2;
  388.  
  389.                while(true) {
  390.                   if (var16) {
  391.                      var8 = var4.next();
  392.                   } else {
  393.                      var16 = true;
  394.                   }
  395.  
  396.                   if (var17) {
  397.                      var9 = var5.next();
  398.                   } else {
  399.                      var17 = true;
  400.                   }
  401.  
  402.                   if (var8 == -1 || var9 == -1) {
  403.                      if (var8 == -1) {
  404.                         return true;
  405.                      }
  406.  
  407.                      while(CollationElementIterator.primaryOrder(var8) == 0 && (CollationElementIterator.secondaryOrder(var8) == 0 || !var20)) {
  408.                         if ((var8 = var4.next()) == -1) {
  409.                            return true;
  410.                         }
  411.                      }
  412.                      break;
  413.                   }
  414.  
  415.                   int var31 = CollationElementIterator.primaryOrder(var8);
  416.                   int var32 = CollationElementIterator.primaryOrder(var9);
  417.                   if (var8 == var9) {
  418.                      if (var6 && var31 != 0 && !var20) {
  419.                         var20 = var19;
  420.                         var21 = false;
  421.                      }
  422.                   } else if (var31 != var32) {
  423.                      if (var8 == 0) {
  424.                         var17 = false;
  425.                      } else if (var9 == 0) {
  426.                         var16 = false;
  427.                      } else if (var31 == 0) {
  428.                         if (var20) {
  429.                            break;
  430.                         }
  431.  
  432.                         var17 = false;
  433.                      } else {
  434.                         if (var32 != 0 || var20) {
  435.                            break;
  436.                         }
  437.  
  438.                         var16 = false;
  439.                      }
  440.                   } else if (var20) {
  441.                      short var12 = CollationElementIterator.secondaryOrder(var8);
  442.                      short var13 = CollationElementIterator.secondaryOrder(var9);
  443.                      if (var12 != var13) {
  444.                         break;
  445.                      }
  446.  
  447.                      if (var21) {
  448.                         short var14 = CollationElementIterator.tertiaryOrder(var8);
  449.                         short var15 = CollationElementIterator.tertiaryOrder(var9);
  450.                         if (var14 != var15) {
  451.                            break;
  452.                         }
  453.                      }
  454.                   }
  455.                }
  456.             }
  457.          }
  458.       } else {
  459.          return false;
  460.       }
  461.    }
  462.  
  463.    private static void debug(Object var0, Object var1, Object var2) {
  464.    }
  465.  
  466.    private static void debug(Object var0) {
  467.       debug(var0, "", "");
  468.    }
  469.  
  470.    private static void debug(Object var0, Object var1) {
  471.       debug(var0, var1, "");
  472.    }
  473. }
  474.